Creation of logical units via borrowing of alternative storage and subsequent movement of the logical units to desired storage

ABSTRACT

A determination is made as to whether a first indicator is configured to allow borrowing of storage space to a first type of storage pool from a second type of storage pool. In response to determining that the first indicator is configured to allow borrowing of storage space from the second type of storage pool, a logical unit is created in the second type of storage pool and a listener application is initiated. The listener application determines that free space that is adequate to store the logical unit has become available in the first type of storage pool. The logical unit is moved from the second type of storage pool to the first type of storage pool, in response to determining, via the listener application, that free space that is adequate to store the logical unit has become available in the first type of storage pool.

BACKGROUND

1. Field

The disclosure relates to a method, a system, and a computer programproduct for the creation of logical units via borrowing of alternativestorage and the subsequent movement of the logical units to desiredstorage.

2. Background

Storage subsystems may be used to store data in a storage area network(SAN). In certain configurations of such storage subsystems, logicalunits (LUN) of varying storage capacities may be created in a pluralityof storage pools. The plurality of storage pools may be configured in aplurality of Redundant Array of Independent Disks (RAID) configurations.For example, some storage pools may be configured as RAID-1 and otherstorage pools may be configured as RAID-5. In a storage area network,different RAID configurations may provide different levels ofperformance, data availability and redundancy.

The amount of data stored in such storage subsystems may increase inamount over time. As a result, in certain situations, such storagesubsystems may run out of space. If a process attempts to create someLUNs on a storage pool of a desired RAID level for data storage, and thestorage subsystem runs out of space, the process may have to be stopped.Considering the amount of time and effort needed to identify and erasedata of a lower importance to make room for data of a higher importance,such disruptions in the process for creating LUNs are undesirable.

SUMMARY OF THE PREFERRED EMBODIMENTS

Provided are a method, a system, and a computer program product in whicha computational device receives a request to create a logical unit,wherein associated with the request is a first type of storage pool inwhich creation of the logical unit is desired. In response todetermining that adequate space is not available to create the logicalunit in the first type of storage pool, a determination is made as towhether a first indicator is configured to allow borrowing of storagespace from a second type of storage pool. In response to determiningthat the first indicator is configured to allow borrowing of storagespace from the second type of storage pool, the logical unit is createdin the second type of storage pool and a listener application isinitiated. The listener application determines that free space that isadequate to store the logical unit has become available in the firsttype of storage pool. The logical unit is moved from the second type ofstorage pool to the first type of storage pool, in response todetermining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool.

In further embodiments, in response to determining that the firstindicator is configured to not allow borrowing of storage space from thesecond type of storage pool, a determination is made as to whether asecond indicator is configured to allow creation of the logical unit inthe second type of storage pool. Furthermore, in response to determiningthat the second indicator is configured to allow creation of the logicalunit in the second type of storage pool, the logical unit is created inthe second type of storage pool.

In additional embodiments, in response to determining that the secondindicator is not configured to allow creation of the logical unit in thesecond type of storage pool, a message is sent to indicate that thelogical unit cannot be created.

In yet additional embodiments, a determination is made as to whetheradequate space is available to create the logical unit in the first typeof storage pool. In response to determining that adequate space isavailable to create the logical unit in the first type of storage pool,the logical unit is created in the first type of storage pool.

In certain embodiments, the first type of storage pool is of a highernumbered Redundant Array of Independent Disks (RAID) level configurationin comparison to the second type of storage pool.

BRIEF DESCRIPTION OF THE DRAWINGS

Referring now to the drawings in which like reference numbers representcorresponding parts throughout:

FIG. 1 illustrates a block diagram of a computing environment thatincludes a computational device coupled to a plurality of storage poolsin a storage area network, in accordance with certain embodiments;

FIG. 2 illustrates a block diagram that shows a first exemplaryembodiment in which an “isNegotiable” indicator is set to “false”, inaccordance with certain embodiments;

FIG. 3 illustrates a block diagram that shows a second exemplaryembodiment in which an “isNegotiable” indicator is set to “true”, inaccordance with certain embodiments;

FIG. 4 illustrates a block diagram that shows a third exemplaryembodiment in which an “isNegotiable” indicator is set to “true” and a“borrow” indicator is set to “true”, in accordance with certainembodiments;

FIG. 5 illustrates a block diagram that shows fourth exemplaryembodiments for various configurations of the “isNegotiable” and“borrow” indicators, in accordance with certain embodiments;

FIG. 6 illustrates a flowchart that shows first operations performed bythe computational device, in accordance with certain embodiments;

FIG. 7 illustrates a flowchart that shows second operations performed bythe computational device, in accordance with certain embodiments; and

FIG. 8 illustrates a block diagram of a computational system that showscertain elements that may be included in the computing environment ofFIG. 1, in accordance with certain embodiments.

DETAILED DESCRIPTION

In the following description, reference is made to the accompanyingdrawings which form a part hereof and which illustrate severalembodiments. It is understood that other embodiments may be utilized andstructural and operational changes may be made.

Certain embodiments allow storage space to be borrowed from analternative type of storage pool when the desired type of storage poolis unavailable. The borrowed storage space is used to store a logicalunit in the alternative type of storage pool. A listener application isinitiated when the storage space is borrowed. The listener applicationdetermines when an adequate amount of storage space has become free inthe desired type of storage pool. When an adequate amount of storagespace becomes free in the desired type of storage pool, the logical unitis moved from the alternative type of storage pool to the desired typeof storage pool.

In certain embodiments, the desired type of storage pool is of a highernumbered RAID level configuration in comparison to the alternative typeof storage pool. For example, the desired type of storage pool may be oftype RAID-5 and the alternative type of storage pool in which thelogical unit is stored may be of type RAID-1, when RAID-5 type ofstorage pools do not have adequate space to store the logical unit.

Exemplary Embodiments

FIG. 1 illustrates a block diagram of a computing environment 100 thatincludes a computational device 102 coupled to a plurality of storagepools 104 a . . . 104 n in a storage area network 106, in accordancewith certain embodiments. The computational device 102 may be anysuitable computational device including those presently known in theart, such as, a personal computer, a workstation, a server, a mainframe,a hand held computer, a palm top computer, a telephony device, a networkappliance, a blade computer, a storage server, a storage controller,etc. Each of the storage pools 104 a . . . 104 n may comprise one ormore storage units, wherein in certain embodiments the exemplary storagepool 104 a may be configured to be of type RAID-5, and the exemplarystorage pool 104 n may be configured to be of type RAID-1. RAID providesincreased storage functions and reliability through redundancy bycombining a plurality of disk drive components into a logical unit,where data is distributed across the drives in one of several wayscalled “RAID levels”. In RAID-1 level (also referred to as mirroringwithout parity or striping), data is written identically to a pluralityof disks. In RAID-5 level (also referred to as block-level striping withdistributed parity), parity is distributed along with the data. RAID-5requires all drives but one to be present to operate. In RAID-5, drivefailure requires replacement, but the RAID-5 array is not destroyed by asingle drive failure.

The computational device 102 is configured to execute a LUN allocatingapplication 108 and a listener application 110. The computational device102 also has access to data structures corresponding to a desired LUN112, a desired storage pool type 114, a first indicator 116 and a secondindicator 118. The LUN allocating application 108 and the listenerapplication 110 may coordinate with each other and interpret the datastructures 112, 114, 116, 118 to store and move LUNs 120 a . . . 120 p,122 a . . . 122 q among the storage pools 104 a . . . 104 n.

FIG. 2 illustrates a block diagram 200 that shows a first exemplaryembodiment 202 in which an “isNegotiable” indicator that corresponds tothe second indicator 118 (shown in FIG. 1) is set to “false”, inaccordance with certain embodiments.

In the first exemplary embodiment 202, the computational device 102(shown in FIG. 1) may be coupled to two storage pools indicated by aRAID-5 pool 204 with 10 GB of free space, and a RAID-1 pool with 6 GB offree space. Thus, storage pool 204 is of type RAID-5 and has 10 GB offree storage space and storage pool 206 is of type RAID-1 and has 6 GBof free storage space.

The computational device 102 (of FIG. 1) may receive a request 208 forLUN creation from a user. The request 208 may indicate that the desiredstorage pool type 114 is of type RAID-5 210, the desired LUNs 112 are afirst 6 GB LUN 212 and a second 6 GB LUN 214. In the exemplaryembodiment shown in FIG. 2, the second indicator 118 (of FIG. 1) maycorrespond to an “isNegotiable” indicator 216 that is set to “false”.Setting the “isNegotiable” indicator to “false” means that if thedesired type of storage pool is not available, then alternate storagepool may not be used to create a LUN.

Since “isNegotiable” is set to “false”, in the exemplary embodiment 202,the request for LUN creation is not satisfied 218 as the total storagespace requested via the first 6 GB LUN 212 and the second 6 GB LUN 214is 12 GB on a RAID-5 pool. However, the RAID-5 pool (shown via referencenumeral 220) has only 10 GB of free space which is not adequate tosatisfy the request 208 for LUN creation.

FIG. 3 illustrates a block diagram 300 that shows a second exemplaryembodiment 302 in which an “isNegotiable” indicator that corresponds tothe second indicator 118 (shown in FIG. 1) is set to “true”, inaccordance with certain embodiments;

In the second exemplary embodiment 202, the computational device 102(shown in FIG. 1) may be coupled to two storage pools indicated by aRAID-5 pool 204 with 10 GB of free space, and a RAID-1 pool with 6 GB offree space.

The computational device 102 (of FIG. 1) may receive a request 308 forLUN creation from a user. The request 308 may indicate that the desiredstorage pool type 114 is of type RAID-5 310, the desired LUNs 112 are afirst 6 GB LUN 312 and a second 6 GB LUN 314. In the exemplaryembodiment shown in FIG. 3, the second indicator 118 may correspond toan “isNegotiable” indicator 316 that is set to “true”. Setting the“isNegotiable” indicator to “true” means that if the desired type ofstorage pool is not available, then alternate storage pool may be usedto create a LUN.

Since “isNegotiable” is set to “true”, in the exemplary embodiment 302,the request for LUN creation is satisfied 318, by first allocating thefirst 6 GB LUN 312 to the RAID-5 pool 320, and then when adequate spaceis not found in the RAID-5 pool 302, allocating the second 6 GB LUN 314to the RAID-1 pool 322.

FIG. 4 illustrates a block diagram 400 that shows a third exemplaryembodiment 402 in which an “isNegotiable” indicator is set to “true” anda “borrow” indicator is set to “true”, in accordance with certainembodiments.

In the third exemplary embodiment 402, the computational device 102(shown in FIG. 1) may be coupled to three storage pools indicated by afirst RAID-5 pool 404 with 10 GB of free space, a RAID-1 pool 406 with 6GB of free space, and a second RAID-5 pool 408 with no free space.

The computational device 102 (of FIG. 1) may receive a request 409 forLUN creation from a user. The request 409 may indicate that the desiredstorage pool type 114 is of type RAID-5 410, the desired LUNs 112 are afirst 6 GB LUN 412 and a second 6 GB LUN 414. In the exemplaryembodiment shown in FIG. 4, the second indicator 118 may correspond toan “isNegotiable” indicator 416 that is set to “true”, and the firstindicator 116 may correspond to a “borrow” indicator 418 that is alsoset to “true”. Setting the “isNegotiable” indicator 416 to “true” meansthat if the desired type of storage pool is not available, thenalternate storage pool may be used to create a LUN. Setting the “borrow”indicator 418 to “true” means that if the desired type of storage poolis not available, then storage space may be borrowed from an alternatestorage pool to create the LUN, and then when storage space of thedesired type becomes available the LUN is moved from the alternatestorage pool to the desired type of storage pool.

Since “isNegotiable” is set to “true” and “borrow” is also set to“true”, in the exemplary embodiment 402, the request for LUN creation issatisfied (shown in block 420), by first allocating the first 6 GB LUN412 to the first RAID-5 pool 421, and then when adequate space is notfound in the RAID-5 pools 421, 424, borrowing 6 GB of storage space fromthe RAID-1 pool 422 to allocate the second 6 GB LUN 414 to the RAID-1pool 422.

Subsequently in block 426, in the exemplary embodiment 402, 7 GB ofstorage space becomes available in the second RAID-5 pool 432 (which isthe same as the second RAID-5 pool 408, 424). The borrowed storage spacein the RAID-1 pool 430 is released and the second 6 GB LUN is moved tothe second RAID-5 pool 432 which is of the type desired by the request408. The first RAID-5 pool 428 continues to store the first 6 GB LUN.

FIG. 5 illustrates a block diagram 500 that shows fourth exemplaryembodiments 502 for various configurations of the “isNegotiable” and“borrow” indicators, in accordance with certain embodiments.

Certain embodiments can implement the following combinations andcorresponding operations for the first indicator (“borrow”) and thesecond indicator (“isNegotiable”) as shown in FIG. 5:

(a) “isNegotiable is set to “true” AND “borrow” is set to “true”:borrowing will take place to select the next best pool in case thedesired pool does not have adequate space in the storage subsystemcomprising the storage pools (reference numeral 504);

(b) “isNegotiable” is set to “false” AND “borrow” is set to “true”:borrowing will take place to select the next best pool in case thedesired pool does not have adequate space in the storage subsystemcomprising the storage pools (reference numeral 506);

(c) “isNegotiable” is set to “true” AND “borrow” is set to “false”:borrowing will not take place and process will select the next best poolin case desired pool does not have adequate space (if no alternatestorage space is found then process will stop) (reference numeral 508);(d) “isNegotiable” is set to “false” AND “borrow” is set to “false”:borrowing will not take place and process is stopped if adequate spacein the pool that is desired is not available (reference numeral 510).

FIG. 6 illustrates a flowchart 600 that shows first operations performedby a computational device 102, in accordance with certain embodiments.In certain embodiments, the first operations may be performed by the LUNallocating application 108 and the listener application 110.

Control starts at block 602, and proceeds to block 604 in which thecomputational device 102 receives a request for creation of at least oneLUN based on a policy, wherein the policy includes configurations forthe “borrow” 116, “isNegotiable” 118 indicators, and the desired storagepool type 114. For example, in certain embodiments, a user may set thepolicy by giving preference to some desired high redundancy RAID levelpool (e.g., RAID-5) and the “loan’ indicator” may be set to “true”.

From block 604, control proceeds to block 606 in which the LUNallocating application 108 determines whether adequate space isavailable in the desired storage pool for creation of the LUN. If so,the LUN allocating application 108 creates (at block 608) the LUN in thedesired pool. If not, the LUN allocating application 108 determines (atblock 612) whether the “borrow” indicator is set to be “true”. If so,the LUN allocating application 108 creates (at block 614) the LUN on analternate pool (e.g., a next best pool to substitute the desired pool)and initiates (at block 616) the listener application 110. Controlproceeds to block 618 in which the listener application 110 checks forfree space pool that is adequate for storing the LUN in the desiredpool. If the listener application 110 finds (at block 620) free spacethat is adequate for storing the LUN in the desired pool, then the LUNallocating application 108 is notified by the listener application 110,and the LUN allocating application 108 moves (at block 622) the LUN fromthe alternate pool to the desired pool and frees up space in thealternate pool. If at block 620, the listener application 110 determinesthat no free space that is adequate to store the LUN in the desired poolhas been found, control returns to block 618 for the listenerapplication 110 to check once again for free space that is adequate tostore on LUN in the desired pool.

If at block 612, it is determined that the “borrow” indicator has notbeen set to true, control proceeds to block 624 in which the LUNallocating application 108 determines whether the “isNegotiable”indicator has been set to be “true”. If so, then the LUN allocatingapplication 108 creates (at block 626) the LUN on an alternate pool thatmay the next best pool to substitute the desired pool. If not, the LUNallocating application 108 sends (at block 628) a message to indicatethat the LUN cannot be created.

In FIG. 6, from blocks 608, 622, 626. 628 control proceeds to block 610where the process stops, and subsequently the process may start onceagain at block 602.

FIG. 7 illustrates a flowchart 700 that shows second operationsperformed by the computational device 102, in accordance with certainembodiments. In certain embodiments, the second operations may beperformed by the LUN allocating application 108 and the listenerapplication 110.

Control starts at block 702 in which a computational device 102 receivesa request to create a logical unit, wherein associated with the requestis a first type of storage pool 114 in which creation of the logicalunit is desired. In response to determining (at block 704) that adequatespace is not available to create the logical unit in the first type ofstorage pool, a determination is made as to whether a first indicator116 (e.g., “borrow” indicator) is configured to allow borrowing ofstorage space from a second type of storage pool. In certainembodiments, the second type of storage pool is a next best type ofstorage pool that may potentially be substituted for the first type ofstorage pool, at least for a limited period of time.

In certain embodiments, from block 704 control may proceed to block 706,wherein in block 706, in response to determining that the firstindicator 116 is configured to allow borrowing of storage space from thesecond type of storage pool, the logical unit is created in the secondtype of storage pool 104 n, and a listener application 110 is initiated.The listener application 110 determines (at block 708) that free spacethat is adequate to store the logical unit has become available in thefirst type of storage pool 104 a. The logical unit is moved (at block710) from the second type of storage pool 104 n to the first type ofstorage pool 104 a, in response to determining, via the listenerapplication 110, that free space that is adequate to store the logicalunit has become available in the first type of storage pool 104 a.

In certain embodiments, from block 704 control may proceed to block 712,wherein in block 712, in response to determining that the firstindicator 116 is configured to not allow borrowing of storage space fromthe second type of storage pool 104 n, a determination is made as towhether a second indicator 118 (e.g., “isNegotiable” indicator) isconfigured to allow creation of the logical unit in the second type ofstorage pool 104 n.

In certain embodiments, from block 712, control may proceed to block714, wherein in block 714, in response to determining that the secondindicator 118 is configured to allow creation of the logical unit in thesecond type of storage pool 104 n, the logical unit is created in thesecond type of storage pool 104 n.

In additional embodiments, from block 712, control may proceed to block716, wherein in block 716, in response to determining that the secondindicator 118 is not configured to allow creation of the logical unit inthe second type of storage pool 104 n, a message is sent to indicatethat the logical unit cannot be created.

In certain embodiments, from block 710, 714, and 716 control may return(not shown in FIG. 7) to block 702 to process another request to createanother logical unit.

Therefore, FIG. 7 illustrates certain embodiments in which the firstindicator (i.e., the “borrow” indicator) 116 has precedence over thesecond indicator (i.e., the “isNegotiable” indicator) 118. In certainembodiments, if the first indicator is set to be “true”, borrowing ofstorage space is allowed irrespective of whether or not the secondindicator is set to be “true”.

In certain embodiments, in case of capacity constraints in storagesubsystems, whatever RAID choice is desired by the user is provided tohim at some later time, even if the RAID choice is not availablecurrently. The first and second indicators may be configured by default,such that, the first indicator is at least set to “true”, and the usermay not need to configure the first indicator or the second indicator.As a result, data may be copied without the user being informed of anycapacity overflow issues and over a period of time if the desired choiceof RAID pool is available then the desired choice of RAID pool will beutilized. Thus, high availability and high redundancy of data may bemaintained even if it means a temporary period of low availability orlow redundancy. For example, data may be stored on RAID-1 pool (lowredundancy level) for some time before freeing the RAID-1 pool up andmoving the data to a RAID-5 pool (high redundancy level).

Additional Embodiment Details

The described operations may be implemented as a method, apparatus orcomputer program product using standard programming and/or engineeringtechniques to produce software, firmware, hardware, or any combinationthereof. Accordingly, aspects of the embodiments may take the form of anentirely hardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.” Furthermore,aspects of the embodiments may take the form of a computer programproduct embodied in one or more computer readable medium(s) havingcomputer readable program code embodied there.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium would include the following: an electrical connectionhaving one or more wires, a portable computer diskette, a hard disk, arandom access memory (RAM), a read-only memory (ROM), an erasableprogrammable read-only memory (EPROM or Flash memory), an optical fiber,a portable compact disc read-only memory (CD-ROM), an optical storagedevice, a magnetic storage device, or any suitable combination of theforegoing. In the context of this document, a computer readable storagemedium may be any tangible medium that can contain, or store a programfor use by or in connection with an instruction execution system,apparatus, or device.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device.

Program code embodied on a computer readable medium may be transmittedusing any appropriate medium, including but not limited to wireless,wireline, optical fiber cable, RF, etc., or any suitable combination ofthe foregoing.

Computer program code for carrying out operations for aspects of thepresent invention may be written in any combination of one or moreprogramming languages, including an object oriented programming languagesuch as Java*, Smalltalk, C++ or the like and conventional proceduralprogramming languages, such as the “C” programming language or similarprogramming languages. The program code may execute entirely on theuser's computer, partly on the user's computer, as a stand-alonesoftware package, partly on the user's computer and partly on a remotecomputer or entirely on the remote computer or server. In the latterscenario, the remote computer may be connected to the user's computerthrough any type of network, including a local area network (LAN) or awide area network (WAN), or the connection may be made to an externalcomputer (for example, through the Internet using an Internet ServiceProvider). *Java is a trademark or registered trademark of SunMicrosystems, Inc.

Aspects of the present invention are described below with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems) and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer program instructions. These computer program instructions maybe provided to a processor of a general purpose computer, specialpurpose computer, or other programmable data processing apparatus toproduce a machine, such that the instructions, which execute via theprocessor of the computer or other programmable data processingapparatus, create means for implementing the functions/acts specified inthe flowchart and/or block diagram block or blocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

FIG. 8 illustrates a block diagram that shows certain elements that maybe included in the system 800 in accordance with certain embodiments.The system 800 may comprise the computational device 102, and mayinclude a circuitry 802 that may in certain embodiments include at leasta processor 804. The system 800 may also include a memory 806 (e.g., avolatile memory device), and storage 808. The storage 808 may include anon-volatile memory device (e.g., EEPROM, ROM, PROM, RAM, DRAM, SRAM,flash, firmware, programmable logic, etc.), magnetic disk drive, opticaldisk drive, tape drive, etc. The storage 808 may comprise an internalstorage device, an attached storage device and/or a network accessiblestorage device. The system 800 may include a program logic 810 includingcode 812 that may be loaded into the memory 806 and executed by theprocessor 804 or circuitry 802. In certain embodiments, the programlogic 810 including code 812 may be stored in the storage 808. Incertain other embodiments, the program logic 810 may be implemented inthe circuitry 802. Therefore, while FIG. 8 shows the program logic 810separately from the other elements, the program logic 810 may beimplemented in the memory 806 and/or the circuitry 802.

In certain embodiments, the computational device 102 and the storagepools 104 a . . . 104 n of FIG. 1 may be cloud component parts includedin a cloud computing environment. In the cloud computing environment thesystems architecture of the hardware and software components involved inthe delivery of cloud computing may involve a plurality of cloudcomponents communicating with each other.

Certain embodiments may be directed to a method for deploying computinginstruction by a person or automated processing integratingcomputer-readable code into a computing system, wherein the code incombination with the computing system is enabled to perform theoperations of the described embodiments.

The terms “an embodiment”, “embodiment”, “embodiments”, “theembodiment”, “the embodiments”, “one or more embodiments”, “someembodiments”, and “one embodiment” mean “one or more (but not all)embodiments of the present invention(s)” unless expressly specifiedotherwise.

The terms “including”, “comprising”, “having” and variations thereofmean “including but not limited to”, unless expressly specifiedotherwise.

The enumerated listing of items does not imply that any or all of theitems are mutually exclusive, unless expressly specified otherwise.

The terms “a”, “an” and “the” mean “one or more”, unless expresslyspecified otherwise.

Devices that are in communication with each other need not be incontinuous communication with each other, unless expressly specifiedotherwise. In addition, devices that are in communication with eachother may communicate directly or indirectly through one or moreintermediaries.

A description of an embodiment with several components in communicationwith each other does not imply that all such components are required. Onthe contrary a variety of optional components are described toillustrate the wide variety of possible embodiments of the presentinvention.

Further, although process steps, method steps, algorithms or the likemay be described in a sequential order, such processes, methods andalgorithms may be configured to work in alternate orders. In otherwords, any sequence or order of steps that may be described does notnecessarily indicate a requirement that the steps be performed in thatorder. The steps of processes described herein may be performed in anyorder practical. Further, some steps may be performed simultaneously.

When a single device or article is described herein, it will be readilyapparent that more than one device/article (whether or not theycooperate) may be used in place of a single device/article. Similarly,where more than one device or article is described herein (whether ornot they cooperate), it will be readily apparent that a singledevice/article may be used in place of the more than one device orarticle or a different number of devices/articles may be used instead ofthe shown number of devices or programs. The functionality and/or thefeatures of a device may be alternatively embodied by one or more otherdevices which are not explicitly described as having suchfunctionality/features. Thus, other embodiments of the present inventionneed not include the device itself.

At least certain operations that may have been illustrated in thefigures show certain events occurring in a certain order. In alternativeembodiments, certain operations may be performed in a different order,modified or removed. Moreover, steps may be added to the above describedlogic and still conform to the described embodiments. Further,operations described herein may occur sequentially or certain operationsmay be processed in parallel. Yet further, operations may be performedby a single processing unit or by distributed processing units.

The foregoing description of various embodiments of the invention hasbeen presented for the purposes of illustration and description. It isnot intended to be exhaustive or to limit the invention to the preciseform disclosed. Many modifications and variations are possible in lightof the above teaching. It is intended that the scope of the invention belimited not by this detailed description, but rather by the claimsappended hereto. The above specification, examples and data provide acomplete description of the manufacture and use of the composition ofthe invention. Since many embodiments of the invention can be madewithout departing from the spirit and scope of the invention, theinvention resides in the claims hereinafter appended.

What is claimed is:
 1. A system, comprising: a memory; and a processorcoupled to the memory, wherein the processor performs operations, theoperations comprising: receiving, by a computational device, a requestto create a logical unit, wherein associated with the request is a firsttype of storage pool in which creation of the logical unit is desired;in response to determining, that adequate space is not available tocreate the logical unit in the first type of storage pool, determiningwhether a first indicator is configured to allow borrowing of storagespace from a second type of storage pool; in response to determiningthat the first indicator is configured to allow borrowing of storagespace from the second type of storage pool, creating the logical unit inthe second type of storage pool and initiating a listener application;determining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool; and moving the logical unit from the second typeof storage pool to the first type of storage pool, in response todetermining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool, wherein the first type of storage pool is of ahigher numbered Redundant Array of Independent Disks (RAID) levelconfiguration in comparison to the second type of storage pool, whereinin response to the first indicator being configured to allow borrowingof storage space from the second type of storage pool, and a secondindicator being configured to allow creation of the logical unit in thesecond type of storage pool, borrowing is performed to select a nextbest pool in case a desired pool does not have adequate space in astorage subsystem.
 2. The system of claim 1, wherein the first type ofstorage pool is RAID-5 and the second type of storage pool is RAID-1. 3.A system, comprising: a memory; and a processor coupled to the memory,wherein the processor performs operations, the operations comprising:receiving, by a computational device, a request to create a logicalunit, wherein associated with the request is a first type of storagepool in which creation of the logical unit is desired; in response todetermining, that adequate space is not available to create the logicalunit in the first type of storage pool, determining whether a firstindicator is configured to allow borrowing of storage space from asecond type of storage pool; in response to determining that the firstindicator is configured to allow borrowing of storage space from thesecond type of storage pool, creating the logical unit in the secondtype of storage pool and initiating a listener application; determining,via the listener application, that free space that is adequate to storethe logical unit has become available in the first type of storage pool;and moving the logical unit from the second type of storage pool to thefirst type of storage pool, in response to determining, via the listenerapplication, that free space that is adequate to store the logical unithas become available in the first type of storage pool, wherein thefirst type of storage pool is of a higher numbered Redundant Array ofIndependent Disks (RAID) level configuration in comparison to the secondtype of storage pool, wherein in response to the first indicator beingconfigured to allow borrowing of storage space from the second type ofstorage pool, and a second indicator being configured to not allowcreation of the logical unit in the second type of storage pool,borrowing is performed to select a next best pool in case a desired pooldoes not have adequate space in a storage subsystem.
 4. A system,comprising: a memory; and a processor coupled to the memory, wherein theprocessor performs operations, the operations comprising: receiving, bya computational device, a request to create a logical unit, whereinassociated with the request is a first type of storage pool in whichcreation of the logical unit is desired; in response to determining,that adequate space is not available to create the logical unit in thefirst type of storage pool, determining whether a first indicator isconfigured to allow borrowing of storage space from a second type ofstorage pool; in response to determining that the first indicator isconfigured to allow borrowing of storage space from the second type ofstorage pool, creating the logical unit in the second type of storagepool and initiating a listener application; determining, via thelistener application, that free space that is adequate to store thelogical unit has become available in the first type of storage pool; andmoving the logical unit from the second type of storage pool to thefirst type of storage pool, in response to determining, via the listenerapplication, that free space that is adequate to store the logical unithas become available in the first type of storage pool, wherein thefirst type of storage pool is of a higher numbered Redundant Array ofIndependent Disks (RAID) level configuration in comparison to the secondtype of storage pool, wherein in response to the first indicator beingconfigured not to allow borrowing of storage space from the second typeof storage pool, and a second indicator being configured to allowcreation of the logical unit in the second type of storage pool,borrowing is not performed, and selection of a next best pool isperformed in case a desired pool does not have adequate space in astorage subsystem.
 5. A system, comprising: a memory; and a processorcoupled to the memory, wherein the processor performs operations, theoperations comprising: receiving, by a computational device, a requestto create a logical unit, wherein associated with the request is a firsttype of storage pool in which creation of the logical unit is desired;in response to determining, that adequate space is not available tocreate the logical unit in the first type of storage pool, determiningwhether a first indicator is configured to allow borrowing of storagespace from a second type of storage pool; in response to determiningthat the first indicator is configured to allow borrowing of storagespace from the second type of storage pool, creating the logical unit inthe second type of storage pool and initiating a listener application;determining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool; and moving the logical unit from the second typeof storage pool to the first type of storage pool, in response todetermining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool, wherein the first type of storage pool is of ahigher numbered Redundant Array of Independent Disks (RAID) levelconfiguration in comparison to the second type of storage pool, whereinin response to the first indicator being configured not to allowborrowing of storage space from the second type of storage pool, and asecond indicator being configured not to allow creation of the logicalunit in the second type of storage pool, borrowing is not performed, andif adequate space is unavailable in a pool that is desired is notavailable, sending a message that the logical unit cannot be created. 6.A computer program product, the computer program product comprising: acomputer readable storage medium having computer readable program codeembodied therewith, the computer readable program code configured toperform operations, the operations comprising: receiving, by acomputational device, a request to create a logical unit, whereinassociated with the request is a first type of storage pool in whichcreation of the logical unit is desired; in response to determining,that adequate space is not available to create the logical unit in thefirst type of storage pool, determining whether a first indicator isconfigured to allow borrowing of storage space from a second type ofstorage pool; in response to determining that the first indicator isconfigured to allow borrowing of storage space from the second type ofstorage pool, creating the logical unit in the second type of storagepool and initiating a listener application; determining, via thelistener application, that free space that is adequate to store thelogical unit has become available in the first type of storage pool; andmoving the logical unit from the second type of storage pool to thefirst type of storage pool, in response to determining, via the listenerapplication, that free space that is adequate to store the logical unithas become available in the first type of storage pool, wherein thefirst type of storage pool is of a higher numbered Redundant Array ofIndependent Disks (RAID) level configuration in comparison to the secondtype of storage pool, wherein in response to the first indicator beingconfigured to allow borrowing of storage space from the second type ofstorage pool, and a second indicator being configured to allow creationof the logical unit in the second type of storage pool, borrowing isperformed to select a next best pool in case a desired pool does nothave adequate space in a storage subsystem.
 7. The computer programproduct of claim 6, wherein the first type of storage pool is RAID-5 andthe second type of storage pool is RAID-1.
 8. A computer programproduct, the computer program product comprising: a computer readablestorage medium having computer readable program code embodied therewith,the computer readable program code configured to perform operations, theoperations comprising: receiving, by a computational device, a requestto create a logical unit, wherein associated with the request is a firsttype of storage pool in which creation of the logical unit is desired;in response to determining, that adequate space is not available tocreate the logical unit in the first type of storage pool, determiningwhether a first indicator is configured to allow borrowing of storagespace from a second type of storage pool; in response to determiningthat the first indicator is configured to allow borrowing of storagespace from the second type of storage pool, creating the logical unit inthe second type of storage pool and initiating a listener application;determining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool; and moving the logical unit from the second typeof storage pool to the first type of storage pool, in response todetermining, via the listener application, that free space that isadequate to store the logical unit has become available in the firsttype of storage pool, wherein the first type of storage pool is of ahigher numbered Redundant Array of Independent Disks (RAID) levelconfiguration in comparison to the second type of storage pool, whereinin response to the first indicator being configured to allow borrowingof storage space from the second type of storage pool, and a secondindicator being configured to not allow creation of the logical unit inthe second type of storage pool, borrowing is performed to select a nextbest pool in case a desired pool does not have adequate space in astorage subsystem.
 9. A computer program product, the computer programproduct comprising: a computer readable storage medium having computerreadable program code embodied therewith, the computer readable programcode configured to perform operations, the operations comprising:receiving, by a computational device, a request to create a logicalunit, wherein associated with the request is a first type of storagepool in which creation of the logical unit is desired; in response todetermining, that adequate space is not available to create the logicalunit in the first type of storage pool, determining whether a firstindicator is configured to allow borrowing of storage space from asecond type of storage pool; in response to determining that the firstindicator is configured to allow borrowing of storage space from thesecond type of storage pool, creating the logical unit in the secondtype of storage pool and initiating a listener application; determining,via the listener application, that free space that is adequate to storethe logical unit has become available in the first type of storage pool;and moving the logical unit from the second type of storage pool to thefirst type of storage pool, in response to determining, via the listenerapplication, that free space that is adequate to store the logical unithas become available in the first type of storage pool, wherein thefirst type of storage pool is of a higher numbered Redundant Array ofIndependent Disks (RAID) level configuration in comparison to the secondtype of storage pool, wherein in response to the first indicator beingconfigured not to allow borrowing of storage space from the second typeof storage pool, and a second indicator being configured to allowcreation of the logical unit in the second type of storage pool,borrowing is not performed, and selection of a next best pool isperformed in case a desired pool does not have adequate space in astorage subsystem.
 10. A computer program product, the computer programproduct comprising: a computer readable storage medium having computerreadable program code embodied therewith, the computer readable programcode configured to perform operations, the operations comprising:receiving, by a computational device, a request to create a logicalunit, wherein associated with the request is a first type of storagepool in which creation of the logical unit is desired; in response todetermining, that adequate space is not available to create the logicalunit in the first type of storage pool, determining whether a firstindicator is configured to allow borrowing of storage space from asecond type of storage pool; in response to determining that the firstindicator is configured to allow borrowing of storage space from thesecond type of storage pool, creating the logical unit in the secondtype of storage pool and initiating a listener application; determining,via the listener application, that free space that is adequate to storethe logical unit has become available in the first type of storage pool;and moving the logical unit from the second type of storage pool to thefirst type of storage pool, in response to determining, via the listenerapplication, that free space that is adequate to store the logical unithas become available in the first type of storage pool, wherein thefirst type of storage pool is of a higher numbered Redundant Array ofIndependent Disks (RAID) level configuration in comparison to the secondtype of storage pool, wherein in response to the first indicator beingconfigured not to allow borrowing of storage space from the second typeof storage pool, and a second indicator being configured not to allowcreation of the logical unit in the second type of storage pool,borrowing is not performed, and if adequate space is unavailable in apool that is desired is not available, sending a message that thelogical unit cannot be created.